import java.util.Scanner;
import java.util.Arrays;
public class test1 {
    /*给定数组 people 。people[i]表示第 i 个人的体重 ，船的数量不限，
    每艘船可以承载的最大重量为 limit。
    每艘船最多可同时载两人，但条件是这些人的重量之和最多为 limit。
    返回 承载所有人所需的最小船数 。*/
    public static int countship(int[] ship,int limit) {
        Arrays.sort(ship);
        int result=0;
        int left=0,right=ship.length-1;
        while(left<right){
            if(ship[left]+ship[right]<=limit) {//判断是否符合条件
                left++;
            }
            right--;//每次判断都移动
            result++;//每次判断都加1，因为不符合和不符合都需要排除一个元素
        }
        //如果剩余长度为奇数则需要再次加1
        if(left==right){
            result++;
        }
        return result;
    }
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] ship=new int[n];
        for(int i=0;i<n;i++){
            ship[i]=sc.nextInt();
        }
        int limit=sc.nextInt();
        int count=countship(ship,limit);
        System.out.println(count);
    }
}
